package cn.lg.soar.mvc.log;

import cn.lg.soar.common.enums.LogTypeEnum;
import cn.lg.soar.mvc.enums.LogArgsModeEnum;
import cn.lg.soar.mvc.enums.LogErrorModeEnum;
import cn.lg.soar.mvc.enums.LogResultModeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

@Data
public class LogConfigDTO {

    /**
     * 日志类型
     */
    @Schema(description = "日志类型")
    private LogTypeEnum type;

    /**
     * 日志名称（什么操作）
     */
    @Schema(description = "日志名称")
    private String name;

    /**
     * 内容，支持el表达式，el结果是字符串则保存字符串，是object的保存json数据
     */
    @Schema(description = "内容(el表达式)")
    private String content;

    /**
     * 入参记录模式（保存哪些参数数据）
     */
    @Schema(description = "入参记录模式")
    private LogArgsModeEnum argsMode;

    /**
     * 入参el表达式，argsMode = LogResultModeEnum.el 时有效
     */
    @Schema(description = "入参el表达式")
    private String argsEl;

    /**
     * 入参索引，argsMode = LogResultModeEnum.index 时有效
     */
    @Schema(description = "入参索引")
    private int argsIndex;

    /**
     * 出参记录模式（保存哪些参数数据）
     */
    @Schema(description = "出参记录模式")
    private LogResultModeEnum resultMode;

    /**
     * 出参el表达式，resultMode = LogResultModeEnum.el 时有效
     * 获取结果对象的某个属性：resultEl="属性名"，例如 resultEl="data"
     */
    @Schema(description = "出参el表达式")
    private String resultEl;

    /**
     * 错误记录记录模式（若 errorMode = LogErrorModeEnum.not，则出现异常不记录日志）
     */
    @Schema(description = "错误记录记录模式")
    private LogErrorModeEnum errorMode;

}
